<?php
	/**
	* 执行文件上传的函数
	* 作者：于尚
	* 时间：2016-7-27 15:44:35
	* @param string $upfile  	文件上传的详细信息
	* @param string $path    	存放文件的路径
	* @param array  $typelist	类型库
	* @param int 	$maxSize	上传文件所允许的大小（默认为0为不限制大小）
	* @param array  $res 		返回值
	*/
	function doupload($upfile,$path,$maxSize=0,$typelist=array("image/gif",'image/pjpeg','image/x-png',"image/jpg","image/jpeg","image/png")){
		//路径
		$path = rtrim($path,"/")."/";
		$res = array("info"=>"","error"=>false);
		//错误
		if($upfile['error']>0){
			switch($upfile['error']){
				case 1:$info = "上传的文件大小超出ini.php的限制";break;
				case 2:$info = "上传的文件大小超出了form的限制";break;
				case 3:$info = "只有部分文件被上传！";break;
				case 4:$info = "没有文件可以上传！";break;
				case 6:$info = "找不到临时文件！";break;
				case 7:$info = "文件写入失败！";break;
				default:$info = "未知错误！";break;
			}
			$res['info'] = "文件上传失败，原因：".$info;
			// return $res;
		}
		//类型
		if(!in_array($upfile['type'],$typelist)){
			$res['info'] = "上传的文件类型不被支持！";
			return $res;
		}
		//大小
		if($maxSize>0 && $upfile['size']>$maxSize){
			$res['info'] = "上传的文件太大！";
			return $res;
		}
		//命名
		$extension = pathinfo($path.$upfile['name'],PATHINFO_EXTENSION);
		do{
			$newfile = date("YmdHis",time()).rand(10000,99999).".".$extension;
		}while(file_exists($newfile));
		//执行
		if(is_uploaded_file($upfile['tmp_name'])){
			if(move_uploaded_file($upfile['tmp_name'],$path.$newfile)){
				$res['error'] = true;
				$res['info'] = $newfile;
				return $res;
			}else{
				$res['info'] = "文件移动发生错误！";
				return $res;
			}
			}else{
				$res['info'] = "文件不是通过HTTP POST方式上传！";
				return $res;
		}
	}

	/**
	*	功能：可以实现图片的等比例缩放；
	*	作者：于尚；
	*	时间：2016-7-25 19:24:19；
	*	@param  string    $path 图片的完整路径；
	*	@param  int       $maxW 图片缩放后的最大宽度（默认为200px）；
	*	@param  int       $maxW 图片缩放后的最大高度（默认为200px）；
	*	@param  string    $pre  缩放后的图片的前缀名（默认为s_）；
	*/
	function imgSmall($path,$maxW=200,$maxH=200,$pre="s_"){
		//响应头；
			$file = getImageSize($path);
			$info = pathInfo($path);
			//header("Content-Type:{$file["mime"]}");
		//画布；
			//旧画布；
				switch($file[2]){
					case 1: $oldImg = imageCreateFromGif($path);
					break;
					case 2: $oldImg = imageCreateFromJpeg($path);
					break;
					case 3: $oldImg = imageCreateFromPng($path);
					break;
				}
			//计算宽高；
				$ow = imagesx($oldImg);
				$oh = imagesy($oldImg);
				if($maxW>$maxH){
					$a = $ow/$maxW;
					$nw = $ow/$a;
					$nh = $oh/$a;
				}else{
					$a = $oh/$maxH;
					$nw = $ow/$a;
					$nh = $oh/$a;
				}

			//新画布；
				$newImg = imageCreateTrueColor($nw,$nh);
		//绘画；
			imageCopyResampled($newImg,$oldImg,0,0,0,0,$nw,$nh,$ow,$oh);
		//生成；
			switch($file[2]){
					case 1: imageGif($newImg,$info["dirname"]."/".$pre.$info["basename"]);
					break;
					case 2: imageJpeg($newImg,$info["dirname"]."/".$pre.$info["basename"]);
					break;
					case 3: imagePng($newImg,$info["dirname"]."/".$pre.$info["basename"]);
				}
		//释放；
		imageDestroy($newImg);
		imageDestroy($oldImg);
	return true;
	}
	
?>